package com.oceansoft.core.dao;

import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;

import com.oceansoft.core.common.util.Pagination;
import com.oceansoft.core.domain.Dict;

public interface IDictionaryDao {
	/**
	 * 分页查询
	 * 
	 * @param pageIndex
	 * @param dict
	 * @return
	 */
	public Pagination<Dict> findByPage(int pageIndex, Dict dict);

	/**
	 * 找出所以字典项
	 * 
	 * @return
	 */
	public List<Dict> findName();

	/**
	 * 新增
	 * 
	 * @param dict
	 */
	public void addDict(Dict dict);

	/**
	 * 按dbId删除
	 * 
	 * @param dbId
	 */
	public void delete(long dbId);

	/**
	 * 
	 * @param dict
	 */
	public void edit(Dict dict);

	/**
	 * 新增或编辑的时候用来判断名称不能重复的
	 * 
	 * @param parentId
	 * @param name
	 * @return
	 */
	public Dict find(long parentId, String name);

	/**
	 * 根据字典项编号查询所以字典值
	 * 
	 * @param parentId
	 * @return
	 */
	public List<Dict> findByParentId(long parentId);

	/**
	 * 
	 * @param dbId
	 * @return
	 */
	public Dict findByDbId(long dbId);

	/**
	 * 根据字典项的DBId查找到所有的字典值
	 * 
	 * @param dbId
	 * @return
	 */
	public List<Dict> findValues(long dbId);
	
	/**
	 * 查找所有的字典值
	 * 
	 * @param dbId
	 * @return
	 */
	public List<Dict> findSysDictValues(String lb,String type);
	
	/**
	 * 查找所有的字典值
	 * 
	 * @param dbId
	 * @return
	 */
	public List<Dict> findSysDictValues(String type);

	/**
	 * 根据字典类型加载数据字典内容
	 * 
	 * @param dictType数据字典类型
	 */
	public Map<String, String> findDictsByDictType(String dictType);

	/**
	 * 查询parntId
	 * 
	 * @param dbid
	 * @return
	 */
	public int findParentId(int dbid);

	/**
	 * 查询功次字典表彰项
	 * 
	 * @return
	 */
	public LinkedHashMap<String, String> findGCDictItem();
	public LinkedHashMap<String, Dict> findGCDict();
	public LinkedHashMap<String, Dict> findJZDict();
	public LinkedHashMap<String, Dict> _findGCDict();
    /**
     * 加载表彰类别
     * @param dbId
     * @param jm
     * @return
     */
	public List<Dict> findValues(long dbId, long jm);
	/**
	 * 获取字典值
	 * @param model
	 * @param dbId表示字典表的parentid
	 * @param type对应方法流
	 */
	public List<Dict> findDictValues(long dbId, int type);

	public int checkcode(long parentid, String code);

	public int getMaxCode(long parentid);
}
